package com.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间操作器
 * @author Alien
 *
 */
public class TimeUtil {
	
	/**
	 * 获取今天时间 格式YY-MM-DD  eg:2010-04-19
	 * @return
	 */
	public static String getToday(){
		String str = "";
		SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
		str = dateformat.format(new Date());
		return str;
	}
	
	/**
	 * 获取现在时间 格式： yy-mm-dd HH:mm:ss  eg:2010-04-19 22:42:13
	 * @return
	 */
	public static String getNow(){
		String str = "";
		Calendar c = Calendar.getInstance();
		SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		str = dateformat.format(c.getTime());
		return str;
	}
	
	/**
	 * 获取Timestamp 当前时间
	 * @return
	 */
	public static Timestamp getNowTimestamp(){
		return new Timestamp(new Date().getTime());
	}
	
	/**
	 * 获取现在时间 格式： yyyy-MM-dd HH:mm  eg:2010-04-19 22:42
	 * @return
	 */
	public static String getNow(String formator){
		String str = "";
		Calendar c = Calendar.getInstance();
		SimpleDateFormat dateformat = new SimpleDateFormat(formator);
		str = dateformat.format(c.getTime());
		return str;
	}
	
	/**
	 * <p>标题：获取今天是星期几 </p>
	 * <p>说明： </p>
	 * @version 1.0  2013-12-16 下午03:41:52
	 * @return 1至7 ，分别代表周一到周日
	 */
	public static int getTodayForWeek() {
		int dw = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
		if(dw == 1){
			return 7;
		}else{
			return dw-1;
		}
	}
	
	/**
	 * Timestamp 转 str
	 * @param t
	 * @param format 转化后的字符串格式	eg:yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String timestampToStr(Timestamp t,String format){
		if(t == null){
			return null;
		}
		SimpleDateFormat df = new SimpleDateFormat(format);
		return df.format(t);
	}
	
	/**
	 * str 转 Timestamp
	 * @param time 字符串时间 
	 * @param timeFormator 字符串时间的格式	eg:yyyy-MM-dd HH:mm:ss
	 * @return
	 * @throws java.text.ParseException
	 */
	public static Timestamp strToTimestamp(String time,String timeFormator) throws ParseException{
		DateFormat format = new SimpleDateFormat(timeFormator);
		Date armFormateDate = format.parse(time);
		
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		time = df.format(armFormateDate);
		Timestamp ts = Timestamp.valueOf(time);
		return ts;
	}
	
	/**
	 * <p>标题：checkIsTime</p>
	 * <p>说明：检查时间格式是否正确</p>
	 * <p>时间：2012-6-14 上午10:52:17</p>
	 * <p>@version 1.0</p>
	 * <p>传入参数：</p>
	 * time，format  eg:time=2012-05-14,format=yyyy-MM-dd
	 * <p>传出参数：</p>
	 * true:正确 ；false:不正确;
	 */
	public static boolean checkIsTime(String time,String format){
		DateFormat df = new SimpleDateFormat(format);
		Date d = null;
		try{
			d = df.parse(time);
		}catch(Exception e){
			return false;
		}
		String s1 = df.format(d);
		return time.equals(s1);
	}
	
	/**
	 * <p>标题： 检查时间d1距离当前时间多少分钟</p>
	 * @version 2.0  2015年1月21日 下午3:02:26
	 * @param d1 Date
	 * @return 具体的分钟数
	 */
	public static long intervalsTimeToNow(Date d1){
		long l = difftime(d1, new Date());
		return l/60000;
	}
	
//	public static void main(String argc[]){
//		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		Date d1;
//		try {
//			d1 = df.parse("2015-01-21 16:06:00");
//			System.out.println(d1);
//			System.out.println(intervalsTimeToNow(d1));
//		} catch (ParseException e) {
//			e.printStackTrace();
//		}
//	}
//	
	
	/**
	 * 格式：20141030133525
	 * @param d
	 * @return
	 */
	public static Date parseString(String d){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		d = d.substring(0,4)+"-"+d.substring(5,6)+"-"+d.substring(7,8)+" "+d.substring(9,10)+":"+d.substring(11,12)+":"+d.substring(13,14);
		Date date = null;
		try {
			date = sdf.parse(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	private static long difftime(Date d1, Date d2){
		return d2.getTime() - d1.getTime();
	}
}
